#ifndef __Collections_IEnumerator_H__
#define __Collections_IEnumerator_H__

///<summary>
/// IEnumerator<T>
///</summary>
#define Collections_IEnumerator(T) bindT(Collections_IEnumerator,T)
#define Declare_Collections_IEnumerator(T, Ti) \
	private enum { \
		_Collections_IEnumerator_##T##VIndex_MoveNext, \
		_Collections_IEnumerator_##T##VIndex_Reset, \
		_Collections_IEnumerator_##T##VIndex_getCurrent, \
		_Collections_IEnumerator_##T##VIndexNext, \
	}; \
	public interfaceT(Collections_IEnumerator,T,, \
		virtualT(Collections_IEnumerator,T,bool,MoveNext); \
		virtualT(Collections_IEnumerator,T,void,Reset); \
		getVirtualT(Collections_IEnumerator,T,Ti,Current); \
	);
#define Implement_Collections_IEnumerator(T, Ti) \
	Implement_TypeTI(Collections_IEnumerator,T,)

#endif /* __Collections_IEnumerator_H__ */